package io;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲输出流写出数据的缓冲区问题
 */
public class FlushDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("bos.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        String str = "让我再看你一遍，从南到北";
        byte[] data = str.getBytes(StandardCharsets.UTF_8);

//        fos.write(data);
        bos.write(data);
        /*
            flush:冲水

            void flush()
            将缓冲流缓冲区中已经缓存的数据一次性写出

            flush方法是所有输出流都具备的方法，因为该方法在接口:Flushable上
            而输出流的超类OutputStream实现了该接口，因此所有输出流都有。
            但是除了缓冲流之外，其他高级输出流的flush方法作用都相同-调用它链接
            的流的flush方法，目的是将flush方法向下传递，最终传递给缓冲输出流
            做清空缓冲区操作。而低级的输出流flush方法上没有任何作用。
         */
//        bos.flush();
        System.out.println("写出完毕");

        bos.close();
    }
}
